<html>
<style>
  table, th, td {
     border: 1px solid rgb(200,200,200);
     border-collapse: collapse;
     }
  table {
     table-layout: fixed;
     width: 1900px;
     }
  td {
     overflow-x: auto;
     }
  th, td {
    padding: 15px;
    text-align: left;
    vertical-align: middle;
    }
  .comments {
    color: #292;
    }
  .source-code {
    color: #22F;
    }
  .interface-parent {
    color: #AAA;
    }
  .interface-name {
    color: #000;
    }
  .check-mark {
    text-align: center;
    }
</style>
<body>
<br>

<h1>DJI Mobile SDK V5 5.9.0 to 5.10.0 Differences</h1>

<br>

<h2>API changes</h2>

<table class="diff-table"><tr valign="top"><td width=15%><font color="#000">5.9.0 Parent and Name</font></td><td width=15%><font color="#000">5.9.0 Code</font></td><td width=15%><font color="#000">5.10.0 Parent and Name</font></td><td width=15%><font color="#000">5.10.0 Code</font></td><td width=3%><font color="#000">Parent</font></td><td width=3%><font color="#000">Name</font></td><td width=3%><font color="#000">Type</font></td><td width=3%><font color="#000">Param</font></td><td width=3%><font color="#000">Return</font></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.</span><span class="interface-name">ScaleType</span></td><td width=15%><span class="source-code">enum ScaleType </span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.</span><span class="interface-name"></span></td><td width=15%><span class="source-code">    enum ScaleType </span></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td><td width=3%></td><td width=3%></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">getValue</span></td><td width=15%><span class="source-code">    &lt;Result&gt; void getValue(DJIKey&lt;Result&gt; key, CommonCallbacks.CompletionCallbackWithParam&lt;Result&gt; callback)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">getValue</span></td><td width=15%><span class="source-code">    &lt;R&gt; void getValue(DJIKey&lt;R&gt; key, CommonCallbacks.CompletionCallbackWithParam&lt;R&gt; callback)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">performAction</span></td><td width=15%><span class="source-code">    &lt;Result&gt; void performAction(DJIKey.ActionKey&lt;?, Result&gt; key, CommonCallbacks.CompletionCallbackWithParam&lt;Result&gt; callback)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">performAction</span></td><td width=15%><span class="source-code">    &lt;R&gt; void performAction(DJIKey.ActionKey&lt;?, R&gt; key, CommonCallbacks.CompletionCallbackWithParam&lt;R&gt; callback)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">listen</span></td><td width=15%><span class="source-code">    &lt;Result&gt; void listen(DJIKey&lt;Result&gt; key, Object listenHolder, boolean getOnce, CommonCallbacks.KeyListener&lt;Result&gt; callback)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">listen</span></td><td width=15%><span class="source-code">    &lt;R&gt; void listen(DJIKey&lt;R&gt; key, Object listenHolder, boolean getOnce, CommonCallbacks.KeyListener&lt;R&gt; callback)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">listen</span></td><td width=15%><span class="source-code">    &lt;Result&gt; void listen(DJIKey&lt;Result&gt; key, Object listenHolder, CommonCallbacks.KeyListener&lt;Result&gt; callback)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">listen</span></td><td width=15%><span class="source-code">    &lt;R&gt; void listen(DJIKey&lt;R&gt; key, Object listenHolder, CommonCallbacks.KeyListener&lt;R&gt; callback)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">performAction</span></td><td width=15%><span class="source-code">    &lt;Param, Result&gt; void performAction(DJIKey.ActionKey&lt;Param, Result&gt; key, Param param, CommonCallbacks.CompletionCallbackWithParam&lt;Result&gt; callback)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">performAction</span></td><td width=15%><span class="source-code">    &lt;P, R&gt; void performAction(DJIKey.ActionKey&lt;P, R&gt; key, P param, CommonCallbacks.CompletionCallbackWithParam&lt;R&gt; callback)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">getValue</span></td><td width=15%><span class="source-code">    &lt;Result&gt; Result getValue(DJIKey&lt;Result&gt; key, @NonNull Result defaultValue)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">getValue</span></td><td width=15%><span class="source-code">    &lt;R&gt; R getValue(DJIKey&lt;R&gt; key, @NonNull R defaultValue)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">getValue</span></td><td width=15%><span class="source-code">    &lt;Result&gt; Result getValue(DJIKey&lt;Result&gt; key)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">getValue</span></td><td width=15%><span class="source-code">    &lt;R&gt; R getValue(DJIKey&lt;R&gt; key)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.ScaleType.</span><span class="interface-name">CENTER_INSIDE</span></td><td width=15%><span class="source-code">        CENTER_INSIDE(2)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.</span><span class="interface-name">CENTER_INSIDE</span></td><td width=15%><span class="source-code">        CENTER_INSIDE(2)</span></td><td width=3%><div class="check-mark">X</div></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.ScaleType.</span><span class="interface-name">FIX_XY</span></td><td width=15%><span class="source-code">        FIX_XY(0)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.</span><span class="interface-name">FIX_XY</span></td><td width=15%><span class="source-code">        FIX_XY(0)</span></td><td width=3%><div class="check-mark">X</div></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.ScaleType.</span><span class="interface-name">CENTER_CROP</span></td><td width=15%><span class="source-code">        CENTER_CROP(1)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ICameraStreamManager.</span><span class="interface-name">CENTER_CROP</span></td><td width=15%><span class="source-code">        CENTER_CROP(1)</span></td><td width=3%><div class="check-mark">X</div></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">setValue</span></td><td width=15%><span class="source-code">    &lt;Param&gt; void setValue(DJIKey&lt;Param&gt; key, Param param, CommonCallbacks.CompletionCallback callback)</span></td><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IKeyManager.</span><span class="interface-name">setValue</span></td><td width=15%><span class="source-code">    &lt;P&gt; void setValue(DJIKey&lt;P&gt; key, P param, CommonCallbacks.CompletionCallback callback)</span></td><td width=3%></td><td width=3%></td><td width=3%></td><td width=3%><div class="check-mark">X</div></td><td width=3%><div class="check-mark">X</div></td></tr></table><br>

<h2>APIs added to 5.10.0</h2>

<table class="diff-table"><tr valign="top"><td width=15%><font color="#000">Parent and Name</font></td><td width=15%><font color="#000">Code</font></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IDataProtectionManager.</span><span class="interface-name">clearMSDKLog</span></td><td width=15%><span class="source-code">    boolean clearMSDKLog()</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IDataProtectionManager.</span><span class="interface-name">enableMSDKLog</span></td><td width=15%><span class="source-code">    void enableMSDKLog(boolean enabled)</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IDataProtectionManager.</span><span class="interface-name">getMSDKLogPath</span></td><td width=15%><span class="source-code">    String getMSDKLogPath()</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.IDataProtectionManager.</span><span class="interface-name">isMSDKLogEnabled</span></td><td width=15%><span class="source-code">    boolean isMSDKLogEnabled()</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ILiveStreamManager.</span><span class="interface-name">getLiveStreamScaleType</span></td><td width=15%><span class="source-code">    ICameraStreamManager.ScaleType getLiveStreamScaleType()</span></td></tr><tr valign="top"><td width=15%><span class="interface-parent">dji.v5.manager.interfaces.ILiveStreamManager.</span><span class="interface-name">setLiveStreamScaleType</span></td><td width=15%><span class="source-code">    void setLiveStreamScaleType(ICameraStreamManager.ScaleType scaleType)</span></td></tr></table><p style="font-size:50%; color:white">--android --android </p></body>
</html>

